package org.example.demo1startjava17.designPattern.bCreationalPatterns.b1FactoryPattern;

import java.lang.reflect.InvocationTargetException;
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.TimeZone;

/**
 * 工厂模式（Factory Pattern）是 Java 中最常用的设计模式之一，它提供了一种创建对象的方式，使得创建对象的过程与使用对象的过程分离。
 * 工厂模式提供了一种创建对象的方式，而无需指定要创建的具体类。
 * 通过使用工厂模式，可以将对象的创建逻辑封装在一个工厂类中，而不是在客户端代码中直接实例化对象，这样可以提高代码的可维护性和可扩展性。
 * 工厂模式的类型
 *      简单工厂模式（Simple Factory Pattern）：
 *      简单工厂模式不是一个正式的设计模式，但它是工厂模式的基础。它使用一个单独的工厂类来创建不同的对象，根据传入的参数决定创建哪种类型的对象。
 *      工厂方法模式（Factory Method Pattern）：
 *      工厂方法模式定义了一个创建对象的接口，但由子类决定实例化哪个类。工厂方法将对象的创建延迟到子类。
 *      抽象工厂模式（Abstract Factory Pattern）：
 *      抽象工厂模式提供一个创建一系列相关或互相依赖对象的接口，而无需指定它们具体的类。
 *
 * @author admin
 * @date 2024/05/30 10:51
 */
public class B1FactoryPattern {

//    java.util.Calendar
//    ResourceBundle and NumberFormat getInstance()
    public static void main(String[] args) {

    }

    public static void test1() {

        Calendar build = new Calendar.Builder()
                .setLocale(Locale.CHINA)
                .setTimeZone(TimeZone.getTimeZone("GMT+8:00"))
                .setInstant(System.currentTimeMillis())
                .build();

        Calendar instance = Calendar.getInstance(TimeZone.getTimeZone("GMT+8:00"));

        ResourceBundle bundle = ResourceBundle.getBundle("");

        NumberFormat instance1 = NumberFormat.getInstance();

        Boolean aTrue = Boolean.valueOf("true");

        Integer i = Integer.valueOf("1");

        try {
            String s = String.class.getDeclaredConstructor().newInstance();
        } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            throw new RuntimeException(e);
        }
    }

}
